// exports.AL_Framework_Al_Common_Module =
//     exports.Ailin_Operate_Prefab_Type =
//     exports.Ailin_Pop_Up_Prefab_Type =
//     exports.Ailin_Reward_Type =
//     exports.isDebug =
//         void 0;
// var i;
// var n;
// var a;
// var $al_eventName = require("./AL_Framework_Al_Event_Name");
// exports.isDebug = !1;
// (a = exports.Ailin_Reward_Type || (exports.Ailin_Reward_Type = {}))[(a.Coin = 0)] = "Coin";
// (n = exports.Ailin_Pop_Up_Prefab_Type || (exports.Ailin_Pop_Up_Prefab_Type = {})).Stop = "StopLayer";
// n.Result = "ResultLayer";
// n.DebugLayer = "DebugLayer";
// n.LuckyTurntable = "LuckyTurntableLayer";
// (i = exports.Ailin_Operate_Prefab_Type || (exports.Ailin_Operate_Prefab_Type = {})).Button = "ButtonLayer";
// i.Rotary = "RotaryLayer";
// var r = (function () {
//     function e() {
//         this.bundle = null;
//         this.operatePrefabsAry = [];
//         this.popUpPrefabsAry = [];
//         this.configAry = [];
//     }
//     e.Instance = function () {
//         if (!e._instance) {
//             e._instance = new e();
//         }
//         return e._instance;
//     };
//     e.destroy = function () {
//         e._instance = null;
//     };
//     e._genjuMingziHuoquPeizhi = function (e) {
//         for (var t = 0; t < this.Instance().configAry.length; t++) {
//             var o = this.Instance().configAry[t];
//             if (e == o.name) {
//                 return o;
//             }
//         }
//     };
//     e._jiazaiGonggongMokuaiZiyuanbao = function (e, t, o, i) {
//         var n = this;
//         var a = cc.assetManager.getBundle("TG_OTTFGQ");
//         AL_APP_SDK_MANAGER.emit($al_eventName.AL_Framework_Al_Event_Name.SetInitData, i);
//         this.Instance().bundle = a;
//         a.loadDir(
//             "TG_CommonModule/Data",
//             function () {},
//             function (e, t) {
//                 e
//                     ? console.error("公共模块配置文件加载失败", e)
//                     : ((n.Instance().configAry = t),
//                       a.loadDir(
//                           "TG_CommonModule/Prefabs/Operate",
//                           function () {},
//                           function (e, t) {
//                               e
//                                   ? console.error("公共模块操作预制体加载失败", e)
//                                   : ((n.Instance().operatePrefabsAry = t),
//                                     a.loadDir(
//                                         "TG_CommonModule/Prefabs/PopUp",
//                                         function () {},
//                                         function (e, t) {
//                                             e
//                                                 ? console.error("公共模块弹窗预制体加载失败", e)
//                                                 : ((n.Instance().popUpPrefabsAry = t), o && o(a));
//                                         }
//                                     ));
//                           }
//                       ));
//             }
//         );
//     };
//     e.tianjiaGonggongMokuai = function (e, t, o, i) {
//         var n = this;
//         if (void 0 === t) {
//             t = null;
//         }
//         if (void 0 === o) {
//             o = !1;
//         }
//         if (!t) {
//             t = cc.sys.language;
//         }
//         o
//             ? cc.resources.load("Flower/scripts/CommonModule/LieYou_CommonModuleConfig", function (o, a) {
//                   var s = a.json.TG_CommonModule;
//                   var r = s.id;
//                   var c = s[ailin_sdk_manager.getSysPlatformName()];
//                   var l = null;
//                   if ("" != s.url && c) {
//                       r = s.url + c.fileName + "/" + s.id;
//                       if ("" != c.md5) {
//                           l = {
//                               version: c.md5
//                           };
//                       }
//                   }
//                   n._jiazaiGonggongMokuaiZiyuanbao(r, l, e, {
//                       language: t,
//                       isUsePower: i.isUsePower,
//                       powerMaxNum: i.powerMaxNum,
//                       gameData: i.gameData,
//                       videoNumMax: i.videoNumMax
//                   });
//               })
//             : this._jiazaiGonggongMokuaiZiyuanbao("TG_CommonModule", null, e, {
//                   language: t,
//                   isUsePower: i.isUsePower,
//                   powerMaxNum: i.powerMaxNum,
//                   gameData: i.gameData,
//                   videoNumMax: i.videoNumMax
//               });
//     };
//     e.huoquGonggongMokuai = function () {
//         var e = this.Instance().bundle;
//         if (!e) {
//             console.error("公共模块没有添加，或加载未完成");
//         }
//         return e;
//     };
//     e.get_Game_Config = function () {
//         var e = this._genjuMingziHuoquPeizhi("TG_Config");
//         e ? (e = e.json) : console.error("配置文件加载未完成");
//         return e;
//     };
//     e.get_Operate_Prefabs_By_Type = function (e) {
//         var t = null;
//         for (var o = 0; o < this.Instance().operatePrefabsAry.length; o++) {
//             var i = this.Instance().operatePrefabsAry[o];
//             if (e == i.name) {
//                 t = i;
//                 break;
//             }
//         }
//         if (!t) {
//             console.error("预制体加载未完成");
//         }
//         return t;
//     };
//     e.get_Pop_Up_Prefabs_By_Type = function (e) {
//         var t = null;
//         for (var o = 0; o < this.Instance().popUpPrefabsAry.length; o++) {
//             var i = this.Instance().popUpPrefabsAry[o];
//             if (e == i.name) {
//                 t = i;
//                 break;
//             }
//         }
//         if (!t) {
//             console.error("预制体加载未完成");
//         }
//         return t;
//     };
//     e._instance = null;
//     return e;
// })();
// exports.AL_Framework_Al_Common_Module = r;

// 导出模块和枚举类型
exports.AL_Framework_Al_Common_Module =
    exports.Ailin_Operate_Prefab_Type =
    exports.Ailin_Pop_Up_Prefab_Type =
    exports.Ailin_Reward_Type =
    exports.isDebug =
        void 0;

// 引入事件名称模块
const $al_eventName = require("./AL_Framework_Al_Event_Name");

// 是否是调试模式
exports.isDebug = false;

// 奖励类型枚举
const Ailin_Reward_Type = {
    Coin: 0
};
exports.Ailin_Reward_Type = Ailin_Reward_Type;

// 弹出预制体类型枚举
const Ailin_Pop_Up_Prefab_Type = {
    Stop: "StopLayer",
    Result: "ResultLayer",
    DebugLayer: "DebugLayer",
    LuckyTurntable: "LuckyTurntableLayer"
};
exports.Ailin_Pop_Up_Prefab_Type = Ailin_Pop_Up_Prefab_Type;

// 操作预制体类型枚举
const Ailin_Operate_Prefab_Type = {
    Button: "ButtonLayer",
    Rotary: "RotaryLayer"
};
exports.Ailin_Operate_Prefab_Type = Ailin_Operate_Prefab_Type;

/**
 * 公共模块类
 */
class AL_Framework_Al_Common_Module {
    constructor() {
        this.bundle = null;
        this.operatePrefabsAry = [];
        this.popUpPrefabsAry = [];
        this.configAry = [];
    }

    /**
     * 获取实例
     * @returns {AL_Framework_Al_Common_Module} 实例
     */
    static Instance() {
        if (!AL_Framework_Al_Common_Module._instance) {
            AL_Framework_Al_Common_Module._instance = new AL_Framework_Al_Common_Module();
        }
        return AL_Framework_Al_Common_Module._instance;
    }

    /**
     * 销毁实例
     */
    static destroy() {
        AL_Framework_Al_Common_Module._instance = null;
    }

    /**
     * 根据名称获取配置
     * @param {string} name 配置名称
     * @returns 配置对象
     */
    static _genjuMingziHuoquPeizhi(name) {
        for (let index = 0; index < this.Instance().configAry.length; index++) {
            const configItem = this.Instance().configAry[index];
            if (name === configItem.name) {
                return configItem;
            }
        }
    }

    /**
     * 加载公共模块资源包
     * @param directoryName
     * @param assetsOptions
     * @param callback
     * @param chushihua_shuju
     */
    static _jiazaiGonggongMokuaiZiyuanbao(directoryName, assetsOptions, callback, chushihua_shuju) {
        const self = this;
        const bundle = cc.assetManager.getBundle("TG_OTTFGQ");
        AL_APP_SDK_MANAGER.emit($al_eventName.AL_Framework_Al_Event_Name.SetInitData, chushihua_shuju);
        this.Instance().bundle = bundle;

        bundle.loadDir(
            "TG_CommonModule/Data",
            () => { },
            (error, assets) => {
                if (error) {
                    console.error("公共模块配置文件加载失败", error);
                } else {
                    self.Instance().configAry = assets;
                    bundle.loadDir(
                        "TG_CommonModule/Prefabs/Operate",
                        () => { },
                        (error, assets) => {
                            if (error) {
                                console.error("公共模块操作预制体加载失败", error);
                            } else {
                                self.Instance().operatePrefabsAry = assets;
                                bundle.loadDir(
                                    "TG_CommonModule/Prefabs/PopUp",
                                    () => { },
                                    (error, assets) => {
                                        if (error) {
                                            console.error("公共模块弹窗预制体加载失败", error);
                                        } else {
                                            self.Instance().popUpPrefabsAry = assets;
                                            callback && callback(bundle);
                                        }
                                    }
                                );
                            }
                        }
                    );
                }
            }
        );
    }

    /**
     * 添加公共模块
     * @param callback
     * @param language
     * @param useBundle
     * @param chushihua_shuju
     */
    static tianjiaGonggongMokuai(callback, language = null, useBundle = false, chushihua_shuju) {
        const self = this;

        if (!language) {
            language = cc.sys.language;
        }

        if (useBundle) {
            cc.resources.load("Flower/scripts/CommonModule/LieYou_CommonModuleConfig", (error, asset) => {
                const config = asset.json.TG_CommonModule;
                let url = config.id;
                const platformConfig = config[ailin_sdk_manager.getSysPlatformName()];
                let versionOptions = null;

                if (config.url !== "" && platformConfig) {
                    url = config.url + platformConfig.fileName + "/" + config.id;
                    if (platformConfig.md5 !== "") {
                        versionOptions = { version: platformConfig.md5 };
                    }
                }
                self._jiazaiGonggongMokuaiZiyuanbao(url, versionOptions, callback, {
                    language: language,
                    isUsePower: chushihua_shuju.isUsePower,
                    powerMaxNum: chushihua_shuju.powerMaxNum,
                    gameData: chushihua_shuju.gameData,
                    videoNumMax: chushihua_shuju.videoNumMax
                });
            });
        } else {
            this._jiazaiGonggongMokuaiZiyuanbao("TG_CommonModule", null, callback, {
                language: language,
                isUsePower: chushihua_shuju.isUsePower,
                powerMaxNum: chushihua_shuju.powerMaxNum,
                gameData: chushihua_shuju.gameData,
                videoNumMax: chushihua_shuju.videoNumMax
            });
        }
    }

    /**
     * 获取公共模块资源包
     * @returns {cc.AssetManager.Bundle | null} 资源包
     */
    static huoquGonggongMokuai() {
        const bundle = this.Instance().bundle;
        if (!bundle) {
            console.error("公共模块没有添加，或加载未完成");
        }
        return bundle;
    }

    // /**
    //  * 获取游戏配置
    //  * @returns 游戏配置
    //  */
    // static get_Game_Config() {
    //     let config = this._genjuMingziHuoquPeizhi("TG_Config");
    //     if (config) {
    //         config = config.json;
    //     } else {
    //         console.error("配置文件加载未完成");
    //     }
    //     return config;
    // }

    // /**
    //  * 根据类型获取操作预制体
    //  * @param {string} type 类型
    //  * @returns 操作预制体
    //  */
    // static get_Operate_Prefabs_By_Type(type) {
    //     let prefab = null;
    //     for (let index = 0; index < this.Instance().operatePrefabsAry.length; index++) {
    //         const item = this.Instance().operatePrefabsAry[index];
    //         if (type === item.name) {
    //             prefab = item;
    //             break;
    //         }
    //     }
    //     if (!prefab) {
    //         console.error("预制体加载未完成");
    //     }
    //     return prefab;
    // }

    // /**
    //  * 根据类型获取弹窗预制体
    //  * @param {string} type 类型
    //  * @returns 弹窗预制体
    //  */
    // static get_Pop_Up_Prefabs_By_Type(type) {
    //     let prefab = null;
    //     for (let index = 0; index < this.Instance().popUpPrefabsAry.length; index++) {
    //         const item = this.Instance().popUpPrefabsAry[index];
    //         if (type === item.name) {
    //             prefab = item;
    //             break;
    //         }
    //     }
    //     if (!prefab) {
    //         console.error("预制体加载未完成");
    //     }
    //     return prefab;
    // }
}

// 初始化静态变量
AL_Framework_Al_Common_Module._instance = null;

// 导出模块
exports.AL_Framework_Al_Common_Module = AL_Framework_Al_Common_Module;
